package com.linyaonan.leetcode.medium._2352;

/**
 * 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ，返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。
 *
 * 如果行和列以相同的顺序包含相同的元素（即相等的数组），则认为二者是相等的。
 *
 * 输入：grid = [[3,2,1],[1,7,6],[2,7,7]]
 * 输出：1
 * 解释：存在一对相等行列对：
 * - (第 2 行，第 1 列)：[2,7,7]
 *
 * n == grid.length == grid[i].length
 * 1 <= n <= 200
 * 1 <= grid[i][j] <= 10^5
 *
 * @author: Lin
 * @date: 2024/3/3
 */
public class EqualRowAndColumnPairs {

    /**
     * 暴力遍历
     * @param grid
     * @return
     */
    public int equalPairs(int[][] grid) {
        int r = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (isMatch(grid, i, j)) {
                    r++;
                }
            }
        }
        return r;
    }

    /**
     * 针对任意一行，以及一列 数据是否相等
     * @param grid
     * @param h
     * @param l
     * @return
     */
    private boolean isMatch(int[][] grid, int h, int l) {
        for (int i = 0; i < grid[h].length; i++) {
            if (grid[h][i] != grid[i][l]) {
                return false;
            }
        }
        return true;
    }

}
